# -*- coding: utf-8 -*-
from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from apps.amway.models import Inventario, HistorialInventario
from apps.amway.forms.inventario import AddProductosInventarioForm, AddProductosInventarioFromFileForm, PreviewForm
from apps.amway.functions.manage_file_content import *
from django import forms
################################################################################
################################################################################
################################################################################
################################################################################
@login_required
def agregar_productos_inventario_manual(request, form_class=AddProductosInventarioForm):
    usuario = usuario = request.user
    if request.method == 'POST':
        form = form_class(request.POST)
        if form.is_valid():
            form.save(usuario)
            return HttpResponseRedirect(reverse('agregar_productos_inventario'))
    else:
        form = form_class()
        #form.factura_init_val(factura_id)
    return render_to_response("amway/inventario/agregar_productos_inventario_manual.html",
                              { 'form' : form },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def ver_inventario(request):
    usuario = request.user
    inventario = Inventario.objects.filter(usuario=usuario).order_by('-existencias')
    valor = 0
    for producto in inventario:
        valor += producto.valor  
    return render_to_response("amway/inventario/ver_inventario.html",
                              { 'inventario' : inventario, 'usuario': usuario, 'valor' : valor },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def ver_historial_inventario(request):
    usuario = request.user
    historial = HistorialInventario.objects.filter(usuario__exact=usuario).order_by('fecha')
    return render_to_response("amway/inventario/ver_historial_inventario.html",
                              { 'historial' : historial, 'usuario': usuario },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def agregar_productos_inventario_from_file(request, form_class=AddProductosInventarioFromFileForm):
    username = request.user.username
    delete_tmp_dir(username)
    if request.method == 'POST':
        form = form_class(request.POST, request.FILES)
        if form.is_valid():
            import_file = request.FILES['import_file']
            form.upload_file(username, import_file.name, import_file)
            return HttpResponseRedirect(reverse('preview_imported_products'))
    else:
        form = form_class()
    return render_to_response("amway/inventario/agregar_productos_inventario_from_file.html",
                              { 'form' : form },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def preview_imported_products(request, form_class=PreviewForm):
    username = request.user.username
    imported_products = get_xls_content(username)
    if len(imported_products) > 0:
        if request.method == 'POST':
            form = form_class(request.POST)
            form.save(imported_products, request.user)
            delete_tmp_dir(username)
            return HttpResponseRedirect(reverse('ver_inventario'))        
    else:
        form = form_class()    
    return render_to_response("amway/inventario/preview_imported_products.html",
                              { 'imported_products' : imported_products },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def agregar_productos_inventario_prueba(request):       
    return render_to_response("amway/inventario/agregar_productos_inventario_prueba.html", context_instance=RequestContext(request))
################################################################################
@login_required
def confirmar_agregar_productos(request):
    usuario = request.user
    
    if request.POST.getlist('agregar'):
        product_list = request.POST.getlist('agregar')
        productos = Producto.objects.filter(pk__in=product_list).order_by('descripcion')   
        
    return render_to_response("amway/inventario/confirmar_agregar_productos.html",
                              { 'productos' : productos },                             
                              context_instance=RequestContext(request))
################################################################################

#@login_required
#def agregar_factura(request, form_class=AddFacturaForm):
#    usuario = request.user
#    if request.method == 'POST':
#        form = form_class(request.POST)
#        if form.is_valid():
#            factura = form.save(usuario)
#            return HttpResponseRedirect(reverse('agregar_productos', kwargs={ 'factura_id': factura.codigo } ))
#    else:
#        form = form_class()
#    return render_to_response("amway/inventario/agregar_factura.html",
#                              { 'form' : form },
#                                context_instance=RequestContext(request))
################################################################################